// ============================== 导入依赖 ============================== //

import VueRouter from 'vue-router'
import NotFound from '@/views/404'

const routes = []
const imports = require.context('./', false, /^\.\/(?!index).+js$/)
imports.keys().forEach((path) => routes.push(...imports(path).default))
routes.push({ name: 'NotFound', path: '*', component: NotFound })

// ============================== 导出路由 ============================== //

const router = new VueRouter({
  mode: 'history',
  base: process.env.VUE_APP_RUN,
  routes,
})

export default router

// ============================== 路由拦截 ============================== //

router.beforeEach((to, from, next) => {
  if (sessionStorage.TOKEN) next()
})

// ============================== 异常处理 ============================== //

const VueRouterPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(to) {
  return VueRouterPush.call(this, to).catch((err) => err)
}
const VueRouterReplace = VueRouter.prototype.replace
VueRouter.prototype.replace = function replace(to) {
  return VueRouterReplace.call(this, to).catch((err) => err)
}
